A graphics processing unit (GPU) is a dedicated graphics rendering device utilized to render, manipulate and sometimes display computerized graphics. GPUs are typically built with a highly parallel structure that provides more efficient processing than typical, general purpose central processing units (CPUs) for a range of complex graphics-related algorithms. For example, the complex algorithms may correspond to representations of three-dimensional computerized graphics. A GPU may implement a number of so-called “primitive” graphics operations, such as forming points, lines, and triangles, to create complex, three-dimensional images on a display more quickly than drawing the images directly to the display with a CPU.
GPUs and other graphics hardware are often limited in terms of available memory and power resources. In particular, graphics hardware used in mobile devices is typically very limited with regard to these resources. Since graphics hardware embedded in a mobile device is typically powered by a battery, the amount of power that can be dedicated to graphics hardware is often limited in order to ensure a desirable amount of battery life for the mobile device. As such, maximum frame rates for mobile graphics hardware is often limited when compared to graphics hardware for desktop computers, since an increase in frame rate also demands an increase in power usage.
Large amounts of internal memory available for mobile graphics hardware are typically limited as it is often desirable to keep the silicon area of mobile devices small. Most current mobile graphics architectures implement a binning algorithm to reduce the amount of internal memory that is needed. A binning algorithm essentially separates a graphics frame into two or more different areas. A graphics frame is the display area for a particular scene that is to be rendered. Each of these areas is separately rendered using a small amount of memory internal to a graphics processor. In this way, the amount of internal memory needed is reduced. This increases the computation and memory bandwidth required to render an entire scene. However, binning algorithms are typically optimized for a predetermined display resolution. Current mobile graphics hardware typically renders scenes to a Video Graphics Array (VGA) resolution of 640×480 pixels or lower. If a scene is to be displayed at a resolution other than the predetermined resolution, the benefits of the binning algorithm may not be realized.
Alternatively, when pixel quality is of maximum importance, GPUs typically perform anti-aliasing techniques. The most common methods of anti-aliasing involve multi-sample rendering, multi-pass accumulation or expensive per-primitive edge computations. However, such techniques often require more memory, power and/or silicon area than is typically available for graphics hardware in mobile devices. As such, these techniques are typically not performed in the mobile setting.
The need for increased and varying display resolutions across different mobile devices is often incompatible with the abilities of current graphics hardware given their limitations in mobile settings. As such, the quality of graphics, including 3D graphics, available to be displayed on mobile devices has been difficult to improve, and as such, the ability to take advantage of higher resolution displays employed in mobile devices has largely been unrealized.